import axios from "axios";
import qs from 'qs';
import {getAccessToken, logout} from './storage'
import { message } from "antd";
import {jump} from "./funcs";
// import codes from "../pages/system/role/codes";
import './config'

//第一步，创建实例
const service = axios.create({
    baseURL: global.app.baseUrl,
    timeout: 50000,
});

// 第二步，请求拦截（请求头）
service.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么 Token, Username
    config.headers["Authorization"] = getAccessToken();

    if(!config.headers['Content-Type']){
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
        config.data = qs.stringify(config.data, {arrayFormat: 'brackets'});
    }

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});


// 第三步，响应拦截（响应头）
service.interceptors.response.use(function (response) {  // http状态为200
    if (response.status === 200){ //请求成功
        const data = response.data;

        if(data.code !== 200 && !response.headers.authorization && data.code !== 2222 && data.code !== 1111) { //业务code拦截
            if (data.msg){
                message.error(data.msg); // 全局的错误拦截提示
            }
            //针对code值，进行业务逻辑处理
            if (data.code === 10001){ //处理未登录用户
                logout();
                jump("/");
            }
        }
        return response;
    }else { //请求失败
        console.log("请求失败:",response);
        return Promise.reject(response);
    }
}, function (error) {  // http 状态不为200
    // const data = error.request;
    // 对响应错误做点什么
    console.log("ERROR:",error.request);
    message.error(error.message ? error.message : "访问出错,状态码:" + error.status); // 全局的错误拦截提示
    return Promise.reject(error.request);
});

export default service;
